<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
        <link href="https://fonts.font.im/css?family=Dancing+Script" rel="stylesheet" />
        <link href="https://fonts.font.im/css?family=Permanent+Marker" rel="stylesheet" />
        <style>
            @font-face {
                font-family: 'icomoon';
                src: url('fonts/icomoon.eot?wr5es');
                src: url('fonts/icomoon.eot?wr5es#iefix') format('embedded-opentype'), url('fonts/icomoon.ttf?wr5es') format('truetype'), url('fonts/icomoon.woff?wr5es') format('woff'), url('fonts/icomoon.svg?wr5es#icomoon') format('svg');
                font-weight: normal;
                font-style: normal;
                font-display: block;
            }
            * {
                font-family: 'icomoon';
                margin: 0;
                padding: 0;
                box-sizing: border-box;
            }
            body {
                min-height: 100vh;
                display: flex;
                justify-content: center;
                align-items: center;
                background-image: linear-gradient(120deg, rgb(255, 196, 0) 40%, rgb(31, 223, 175), rgb(0, 195, 255), rgb(183, 0, 255) 60%);
            }
            .card {
                position: relative;
                width: 250px;
                height: 300px;
                transform-style: preserve-3d;
                cursor: pointer;
            }
            .card2 {
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                background-color: transparent;
                border-radius: 15px;
                transition: all 0.2s;
                transform-style: preserve-3d;
                box-shadow: inset 0 0 30px rgb(83, 83, 82);
            }
            /* 定义头像图片 */
            .card2 img {
                position: absolute;
                top: 30px;
                left: 75px;
                width: 100px;
                height: 100px;
                border-radius: 50%;
                transform: translateZ(50px);
                box-shadow: 0 0 10px rgb(83, 83, 83);
            }
            .card2 h2 {
                font-family: 'Permanent Marker', cursive;
                position: absolute;
                top: 150px;
                width: 100%;
                height: 28px;
                font-size: 25px;
                line-height: 28px;
                text-align: center;
                text-shadow: 0 0 5px rgb(177, 174, 174);
                color: rgb(33, 34, 34);
                transform: translateZ(50px);
            }
            .txt {
                font-family: 'Permanent Marker', cursive;
                position: absolute;
                top: 180px;
                width: 100%;
                line-height: 30px;
                font-size: 16px;
                text-align: center;
                text-shadow: 0 0 10px rgb(185, 187, 186);
                transform: translateZ(50px);
            }
            .font {
                position: absolute;
                top: 215px;
                left: 50%;
                width: 80%;
                height: 50px;
                display: flex;
                align-items: center;
                justify-content: space-around;
                transform: translateZ(50px) translateX(-50%);
            }
            .font span {
                display: inline-block;
                width: 50px;
                height: 50px;
                line-height: 50px;
                text-align: center;
                font-size: 30px;
                color: white;
                border-radius: 50%;
                background-color: rgb(61, 60, 60);
                /*    border: 1px solid rgb(173, 172, 172) ; */
                box-shadow: inset 0 0 8px white, inset 0 0 8px white, inset 0 0 8px white, 0 0 8px black;
            }
        </style>
    </head>

    <body>
        <div class="card">
            <div class="card2">
                <img src="img/haha.gif" alt="haha" />
                <h2>北极光之夜</h2>
                <p class="txt">The aurora borealis.</p>
                <div class="font">
                    <span> </span>
                    <span> </span>
                    <span> </span>
                </div>
            </div>
        </div>

        <script>
            /* 获取底层盒子标签*/
            var card = document.querySelector('.card');
            /*获取卡片标签*/
            var card2 = document.querySelector('.card2');
            /*给底层盒子添加鼠标经过mousemove事件*/
            card.addEventListener('mousemove', function (e) {
                /* x为鼠标距离页面左侧距离减去底层盒子距离页面左侧距离*/
                let x = e.clientX - card.offsetLeft;
                /* left为底层盒子宽度的一半*/
                let left = card.offsetWidth / 2;
                /* rotateY 为卡片绕Y轴旋转的大小，旋转度看自己，我除以5，也可以大点或小点 */
                let rotateY = -(left - x) / 5;
                /* y为鼠标距离页面顶侧距离减去底层盒子距离页面顶侧距离*/
                let y = e.clientY - card.offsetTop;
                /* top为底层盒子高度的一半*/
                let top = card.offsetHeight / 2;
                /* rotateX 为卡片绕X轴旋转的大小，旋转度看自己，我除以5，也可以大点或小点 */
                let rotateX = (top - y) / 5;
                /*为卡片添加transform属性 */
                card2.style.cssText = `
                  transform: rotateX(${rotateX}deg) rotateY(${rotateY}deg); `;
            });
            /*给底层盒子添加鼠标离开事件mouseout*/
            card.addEventListener('mouseout', function (e) {
                /* 让卡片的transform属性的绕X，Y轴的rotate都是0deg*/
                card2.style.cssText = `
                  transform: rotateY(0deg) rotateX(0deg); `;
            });
        </script>
    </body>
</html>
